/*
*---------------------------------------------------------------
*                        Lvgl Font Tool                         
*                                                               
* 注:使用unicode编码                                              
* 注:本字体文件由Lvgl Font Tool V0.5测试版 生成                     
* 作者:阿里(qq:617622104)                                         
*---------------------------------------------------------------
*/


#include "lvgl.h"


static const uint8_t glyph_bitmap[] = {
/*   */
0x00,  //.


/* ! */
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@
0x00,  //.
0x80,  //@


/* " */
0xe0,  //@@@
0x60,  //.@@
0xa0,  //@.@


/* # */
0x68,  //.@@.@
0xf8,  //@@@@@
0x50,  //.@.@.
0xf8,  //@@@@@
0x50,  //.@.@.
0xd0,  //@@.@.


/* $ */
0x20,  //..@..
0x70,  //.@@@.
0xe0,  //@@@..
0x70,  //.@@@.
0x38,  //..@@@
0x28,  //..@.@
0xf0,  //@@@@.
0x20,  //..@..


/* % */
0xc8,  //@@..@.
0xd0,  //@@.@..
0xe0,  //@@@...
0x3c,  //..@@@@
0x54,  //.@.@.@
0x5c,  //.@.@@@


/* & */
0x70,  //.@@@..
0x50,  //.@.@..
0x70,  //.@@@..
0xfc,  //@@@@@@
0xd8,  //@@.@@.
0x7c,  //.@@@@@


/* ' */
0xc0,  //@@
0x40,  //.@
0x80,  //@.


/* ( */
0x40,  //.@
0xc0,  //@@
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0xc0,  //@@
0x40,  //.@


/* ) */
0xc0,  //@@.
0x40,  //.@.
0x60,  //.@@
0x20,  //..@
0x20,  //..@
0x20,  //..@
0x60,  //.@@
0x40,  //.@.
0xc0,  //@@.


/* * */
0x20,  //..@.
0xf0,  //@@@@
0x60,  //.@@.
0x70,  //.@@@


/* + */
0x20,  //..@..
0x20,  //..@..
0xf8,  //@@@@@
0x20,  //..@..
0x20,  //..@..


/* , */
0x40,  //.@
0xc0,  //@@


/* - */
0xc0,  //@@


/* . */
0x80,  //@
0x80,  //@


/* / */
0x20,  //..@
0x20,  //..@
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x80,  //@..
0x80,  //@..


/* 0 */
0x70,  //.@@@.
0xc8,  //@@..@
0xc8,  //@@..@
0xc8,  //@@..@
0x58,  //.@.@@
0x70,  //.@@@.


/* 1 */
0xe0,  //@@@
0x60,  //.@@
0x60,  //.@@
0x60,  //.@@
0x60,  //.@@
0x60,  //.@@


/* 2 */
0x70,  //.@@@.
0x18,  //...@@
0x10,  //...@.
0x30,  //..@@.
0x60,  //.@@..
0xf8,  //@@@@@


/* 3 */
0xe0,  //@@@.
0x30,  //..@@
0xe0,  //@@@.
0x30,  //..@@
0x30,  //..@@
0xe0,  //@@@.


/* 4 */
0x30,  //..@@.
0x30,  //..@@.
0x50,  //.@.@.
0x90,  //@..@.
0xf8,  //@@@@@
0x10,  //...@.


/* 5 */
0xe0,  //@@@.
0x80,  //@...
0xe0,  //@@@.
0x30,  //..@@
0x30,  //..@@
0xe0,  //@@@.


/* 6 */
0x30,  //..@@.
0x40,  //.@...
0xf0,  //@@@@.
0xc8,  //@@..@
0xc8,  //@@..@
0x70,  //.@@@.


/* 7 */
0xf8,  //@@@@@
0x10,  //...@.
0x10,  //...@.
0x30,  //..@@.
0x20,  //..@..
0x60,  //.@@..


/* 8 */
0x78,  //.@@@@
0x48,  //.@..@
0x70,  //.@@@.
0x58,  //.@.@@
0xc8,  //@@..@
0x78,  //.@@@@


/* 9 */
0x70,  //.@@@.
0xc8,  //@@..@
0xd8,  //@@.@@
0x78,  //.@@@@
0x10,  //...@.
0x70,  //.@@@.


/* : */
0xc0,  //@@
0xc0,  //@@
0x00,  //..
0x80,  //@.
0xc0,  //@@


/* ; */
0x60,  //.@@
0x60,  //.@@
0x00,  //...
0x00,  //...
0x60,  //.@@
0xc0,  //@@.


/* < */
0x18,  //...@@
0x60,  //.@@..
0xc0,  //@@...
0x70,  //.@@@.
0x08,  //....@


/* = */
0xf8,  //@@@@@
0x00,  //.....
0xf8,  //@@@@@


/* > */
0xc0,  //@@...
0x38,  //..@@@
0x08,  //....@
0x70,  //.@@@.
0x80,  //@....


/* ? */
0xf0,  //@@@@
0x30,  //..@@
0x20,  //..@.
0x40,  //.@..
0x00,  //....
0x60,  //.@@.


/* @ */
0x3e,  //..@@@@@
0x52,  //.@.@..@
0xfe,  //@@@@@@@
0xaa,  //@.@.@.@
0xbe,  //@.@@@@@
0x40,  //.@.....
0x3c,  //..@@@@.


/* A */
0x30,  //..@@...
0x28,  //..@.@..
0x68,  //.@@.@..
0x7c,  //.@@@@@.
0x44,  //.@...@.
0xc6,  //@@...@@


/* B */
0xf0,  //@@@@
0x90,  //@..@
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0xf0,  //@@@@


/* C */
0xf0,  //@@@@
0x80,  //@...
0x80,  //@...
0x80,  //@...
0x80,  //@...
0xf0,  //@@@@


/* D */
0xf0,  //@@@@.
0x98,  //@..@@
0x98,  //@..@@
0x98,  //@..@@
0x98,  //@..@@
0xf0,  //@@@@.


/* E */
0xf0,  //@@@@
0x80,  //@...
0xe0,  //@@@.
0x80,  //@...
0x80,  //@...
0xf0,  //@@@@


/* F */
0xf0,  //@@@@
0x80,  //@...
0xe0,  //@@@.
0xe0,  //@@@.
0x80,  //@...
0x80,  //@...


/* G */
0xf0,  //@@@@.
0x80,  //@....
0xb8,  //@.@@@
0xb8,  //@.@@@
0x98,  //@..@@
0xf8,  //@@@@@


/* H */
0x88,  //@...@
0x88,  //@...@
0xf8,  //@@@@@
0x88,  //@...@
0x88,  //@...@
0x88,  //@...@


/* I */
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@


/* J */
0x20,  //..@
0x20,  //..@
0x20,  //..@
0x20,  //..@
0x20,  //..@
0x20,  //..@
0x60,  //.@@
0xc0,  //@@.


/* K */
0x98,  //@..@@
0xa0,  //@.@..
0xe0,  //@@@..
0xa0,  //@.@..
0xb0,  //@.@@.
0x98,  //@..@@


/* L */
0x80,  //@...
0x80,  //@...
0x80,  //@...
0x80,  //@...
0x80,  //@...
0xf0,  //@@@@


/* M */
0xcc,  //@@..@@
0xcc,  //@@..@@
0xb4,  //@.@@.@
0xb4,  //@.@@.@
0xb4,  //@.@@.@
0x84,  //@....@


/* N */
0xc8,  //@@..@
0xe8,  //@@@.@
0xa8,  //@.@.@
0xa8,  //@.@.@
0x98,  //@..@@
0x98,  //@..@@


/* O */
0xf8,  //@@@@@
0x88,  //@...@
0x88,  //@...@
0x88,  //@...@
0x98,  //@..@@
0xf0,  //@@@@.


/* P */
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0xf0,  //@@@@
0x80,  //@...
0x80,  //@...


/* Q */
0xf8,  //@@@@@
0x88,  //@...@
0x88,  //@...@
0x88,  //@...@
0x98,  //@..@@
0xf0,  //@@@@.
0x18,  //...@@


/* R */
0xf0,  //@@@@.
0x90,  //@..@.
0x90,  //@..@.
0xe0,  //@@@..
0xb0,  //@.@@.
0x98,  //@..@@


/* S */
0x70,  //.@@@.
0xc0,  //@@...
0x70,  //.@@@.
0x18,  //...@@
0x18,  //...@@
0xf0,  //@@@@.


/* T */
0xf8,  //@@@@@
0x20,  //..@..
0x20,  //..@..
0x20,  //..@..
0x20,  //..@..
0x20,  //..@..


/* U */
0x88,  //@...@
0x88,  //@...@
0x88,  //@...@
0x88,  //@...@
0x98,  //@..@@
0xf0,  //@@@@.


/* V */
0xc4,  //@@...@
0x4c,  //.@..@@
0x48,  //.@..@.
0x68,  //.@@.@.
0x30,  //..@@..
0x30,  //..@@..


/* W */
0xd9,  //@@.@@..@
0x59,  //.@.@@..@
0x5f,  //.@.@@@@@
0x57,  //.@.@.@@@
0x76,  //.@@@.@@.
0x66,  //.@@..@@.


/* X */
0xcc,  //@@..@@
0x78,  //.@@@@.
0x30,  //..@@..
0x38,  //..@@@.
0x68,  //.@@.@.
0xcc,  //@@..@@


/* Y */
0xcc,  //@@..@@
0x78,  //.@@@@.
0x30,  //..@@..
0x30,  //..@@..
0x30,  //..@@..
0x30,  //..@@..


/* Z */
0x78,  //.@@@@
0x18,  //...@@
0x30,  //..@@.
0x20,  //..@..
0x40,  //.@...
0xf8,  //@@@@@


/* [ */
0xc0,  //@@
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0xc0,  //@@


/* \ */
0x80,  //@...
0x40,  //.@..
0x40,  //.@..
0x20,  //..@.
0x20,  //..@.
0x20,  //..@.
0x10,  //...@
0x10,  //...@


/* ] */
0xc0,  //@@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0xc0,  //@@


/* ^ */
0x60,  //.@@.
0xa0,  //@.@.
0xb0,  //@.@@


/* _ */
0xf8,  //@@@@@


/* ` */
0x80,  //@.
0x40,  //.@


/* a */
0x70,  //.@@@.
0x08,  //....@
0x78,  //.@@@@
0xc8,  //@@..@
0x78,  //.@@@@


/* b */
0x80,  //@...
0x80,  //@...
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0xf0,  //@@@@


/* c */
0x70,  //.@@@
0x40,  //.@..
0xc0,  //@@..
0xc0,  //@@..
0x70,  //.@@@


/* d */
0x08,  //....@
0x08,  //....@
0x78,  //.@@@@
0xc8,  //@@..@
0xc8,  //@@..@
0xc8,  //@@..@
0x78,  //.@@@@


/* e */
0x70,  //.@@@.
0x48,  //.@..@
0xf8,  //@@@@@
0xc0,  //@@...
0x78,  //.@@@@


/* f */
0x60,  //.@@
0x40,  //.@.
0xe0,  //@@@
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.


/* g */
0x78,  //.@@@@
0x48,  //.@..@
0xc8,  //@@..@
0xc8,  //@@..@
0x78,  //.@@@@
0x08,  //....@
0x70,  //.@@@.


/* h */
0x80,  //@...
0x80,  //@...
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@


/* i */
0x80,  //@
0x00,  //.
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@
0x80,  //@


/* j */
0x40,  //.@
0x00,  //..
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x40,  //.@
0x80,  //@.


/* k */
0x80,  //@...
0x80,  //@...
0xb0,  //@.@@
0xa0,  //@.@.
0xc0,  //@@..
0xa0,  //@.@.
0xb0,  //@.@@


/* l */
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.
0xc0,  //@@


/* m */
0xfe,  //@@@@@@@
0x96,  //@..@.@@
0x92,  //@..@..@
0x92,  //@..@..@
0x92,  //@..@..@


/* n */
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@


/* o */
0x70,  //.@@@.
0x48,  //.@..@
0xc8,  //@@..@
0xc8,  //@@..@
0x78,  //.@@@@


/* p */
0xf0,  //@@@@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0xf0,  //@@@@
0x80,  //@...
0x80,  //@...


/* q */
0x78,  //.@@@@
0xc8,  //@@..@
0xc8,  //@@..@
0xc8,  //@@..@
0x78,  //.@@@@
0x08,  //....@
0x08,  //....@


/* r */
0xc0,  //@@
0x80,  //@.
0x80,  //@.
0x80,  //@.
0x80,  //@.


/* s */
0x70,  //.@@@
0xc0,  //@@..
0x70,  //.@@@
0x10,  //...@
0xf0,  //@@@@


/* t */
0x40,  //.@.
0xe0,  //@@@
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x60,  //.@@


/* u */
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0x90,  //@..@
0xf0,  //@@@@


/* v */
0xc8,  //@@..@
0x58,  //.@.@@
0x50,  //.@.@.
0x70,  //.@@@.
0x30,  //..@@.


/* w */
0xdb,  //@@.@@.@@
0x5a,  //.@.@@.@.
0x5a,  //.@.@@.@.
0x6e,  //.@@.@@@.
0x66,  //.@@..@@.


/* x */
0xd8,  //@@.@@
0x70,  //.@@@.
0x30,  //..@@.
0x70,  //.@@@.
0xd8,  //@@.@@


/* y */
0xc8,  //@@..@
0x58,  //.@.@@
0x50,  //.@.@.
0x70,  //.@@@.
0x30,  //..@@.
0x20,  //..@..
0x40,  //.@...


/* z */
0x70,  //.@@@.
0x10,  //...@.
0x20,  //..@..
0x40,  //.@...
0xf8,  //@@@@@


/* { */
0x20,  //..@
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x80,  //@..
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x20,  //..@


/* | */
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@
0xc0,  //@@


/* } */
0xc0,  //@@.
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0x20,  //..@
0x40,  //.@.
0x40,  //.@.
0x40,  //.@.
0xc0,  //@@.


/* ~ */
0x50,  //.@.@.
0xb8,  //@.@@@


/*  */
0xe0,  //@@@
0xa0,  //@.@
0xa0,  //@.@
0xa0,  //@.@
0xa0,  //@.@
0xa0,  //@.@
0xe0,  //@@@


/* 中 */
0x10,  //...@...
0xfe,  //@@@@@@@
0x92,  //@..@..@
0x92,  //@..@..@
0xfe,  //@@@@@@@
0x10,  //...@...
0x10,  //...@...
0x10,  //...@...


/* 国 */
0xfe,  //@@@@@@@
0xfe,  //@@@@@@@
0x92,  //@..@..@
0xfa,  //@@@@@.@
0x9a,  //@..@@.@
0xfe,  //@@@@@@@
0x82,  //@.....@
0xfe,  //@@@@@@@


};


static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
    {.bitmap_index = 0,	.adv_w = 2, .box_h = 1, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*( )*/
    {.bitmap_index = 1,	.adv_w = 3, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(!)*/
    {.bitmap_index = 7,	.adv_w = 4, .box_h = 3, .box_w = 8, .ofs_x = 0, .ofs_y = 7},/*(")*/
    {.bitmap_index = 10,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(#)*/
    {.bitmap_index = 16,	.adv_w = 5, .box_h = 8, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*($)*/
    {.bitmap_index = 24,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(%)*/
    {.bitmap_index = 30,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(&)*/
    {.bitmap_index = 36,	.adv_w = 2, .box_h = 3, .box_w = 8, .ofs_x = 0, .ofs_y = 7},/*(')*/
    {.bitmap_index = 39,	.adv_w = 4, .box_h = 9, .box_w = 8, .ofs_x = 1, .ofs_y = 1},/*(()*/
    {.bitmap_index = 48,	.adv_w = 4, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*())*/
    {.bitmap_index = 57,	.adv_w = 4, .box_h = 4, .box_w = 8, .ofs_x = 0, .ofs_y = 6},/*(*)*/
    {.bitmap_index = 61,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(+)*/
    {.bitmap_index = 66,	.adv_w = 3, .box_h = 2, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*(,)*/
    {.bitmap_index = 68,	.adv_w = 4, .box_h = 1, .box_w = 8, .ofs_x = 1, .ofs_y = 5},/*(-)*/
    {.bitmap_index = 69,	.adv_w = 3, .box_h = 2, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(.)*/
    {.bitmap_index = 71,	.adv_w = 5, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(/)*/
    {.bitmap_index = 78,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(0)*/
    {.bitmap_index = 84,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(1)*/
    {.bitmap_index = 90,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(2)*/
    {.bitmap_index = 96,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(3)*/
    {.bitmap_index = 102,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(4)*/
    {.bitmap_index = 108,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(5)*/
    {.bitmap_index = 114,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(6)*/
    {.bitmap_index = 120,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(7)*/
    {.bitmap_index = 126,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(8)*/
    {.bitmap_index = 132,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(9)*/
    {.bitmap_index = 138,	.adv_w = 4, .box_h = 5, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(:)*/
    {.bitmap_index = 143,	.adv_w = 4, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*(;)*/
    {.bitmap_index = 149,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(<)*/
    {.bitmap_index = 154,	.adv_w = 5, .box_h = 3, .box_w = 8, .ofs_x = 0, .ofs_y = 4},/*(=)*/
    {.bitmap_index = 157,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(>)*/
    {.bitmap_index = 162,	.adv_w = 4, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(?)*/
    {.bitmap_index = 168,	.adv_w = 8, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*(@)*/
    {.bitmap_index = 175,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(A)*/
    {.bitmap_index = 181,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(B)*/
    {.bitmap_index = 187,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(C)*/
    {.bitmap_index = 193,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(D)*/
    {.bitmap_index = 199,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(E)*/
    {.bitmap_index = 205,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(F)*/
    {.bitmap_index = 211,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(G)*/
    {.bitmap_index = 217,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(H)*/
    {.bitmap_index = 223,	.adv_w = 3, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(I)*/
    {.bitmap_index = 229,	.adv_w = 3, .box_h = 8, .box_w = 8, .ofs_x = -1, .ofs_y = 1},/*(J)*/
    {.bitmap_index = 237,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(K)*/
    {.bitmap_index = 243,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(L)*/
    {.bitmap_index = 249,	.adv_w = 8, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(M)*/
    {.bitmap_index = 255,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(N)*/
    {.bitmap_index = 261,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(O)*/
    {.bitmap_index = 267,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(P)*/
    {.bitmap_index = 273,	.adv_w = 7, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 2},/*(Q)*/
    {.bitmap_index = 280,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(R)*/
    {.bitmap_index = 286,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(S)*/
    {.bitmap_index = 292,	.adv_w = 5, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(T)*/
    {.bitmap_index = 298,	.adv_w = 7, .box_h = 6, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(U)*/
    {.bitmap_index = 304,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(V)*/
    {.bitmap_index = 310,	.adv_w = 9, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(W)*/
    {.bitmap_index = 316,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(X)*/
    {.bitmap_index = 322,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(Y)*/
    {.bitmap_index = 328,	.adv_w = 6, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(Z)*/
    {.bitmap_index = 334,	.adv_w = 3, .box_h = 9, .box_w = 8, .ofs_x = 1, .ofs_y = 1},/*([)*/
    {.bitmap_index = 343,	.adv_w = 5, .box_h = 8, .box_w = 8, .ofs_x = 0, .ofs_y = 2},/*(\)*/
    {.bitmap_index = 351,	.adv_w = 3, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(])*/
    {.bitmap_index = 360,	.adv_w = 5, .box_h = 3, .box_w = 8, .ofs_x = 1, .ofs_y = 6},/*(^)*/
    {.bitmap_index = 363,	.adv_w = 5, .box_h = 1, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(_)*/
    {.bitmap_index = 364,	.adv_w = 4, .box_h = 2, .box_w = 8, .ofs_x = 1, .ofs_y = 8},/*(`)*/
    {.bitmap_index = 366,	.adv_w = 6, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(a)*/
    {.bitmap_index = 371,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(b)*/
    {.bitmap_index = 378,	.adv_w = 4, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(c)*/
    {.bitmap_index = 383,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(d)*/
    {.bitmap_index = 390,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(e)*/
    {.bitmap_index = 395,	.adv_w = 3, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(f)*/
    {.bitmap_index = 402,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(g)*/
    {.bitmap_index = 409,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(h)*/
    {.bitmap_index = 416,	.adv_w = 3, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(i)*/
    {.bitmap_index = 423,	.adv_w = 3, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(j)*/
    {.bitmap_index = 432,	.adv_w = 5, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(k)*/
    {.bitmap_index = 439,	.adv_w = 3, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(l)*/
    {.bitmap_index = 446,	.adv_w = 8, .box_h = 5, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(m)*/
    {.bitmap_index = 451,	.adv_w = 6, .box_h = 5, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(n)*/
    {.bitmap_index = 456,	.adv_w = 6, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(o)*/
    {.bitmap_index = 461,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 1},/*(p)*/
    {.bitmap_index = 468,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(q)*/
    {.bitmap_index = 475,	.adv_w = 4, .box_h = 5, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(r)*/
    {.bitmap_index = 480,	.adv_w = 4, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(s)*/
    {.bitmap_index = 485,	.adv_w = 3, .box_h = 6, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(t)*/
    {.bitmap_index = 491,	.adv_w = 6, .box_h = 5, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*(u)*/
    {.bitmap_index = 496,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(v)*/
    {.bitmap_index = 501,	.adv_w = 8, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(w)*/
    {.bitmap_index = 506,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(x)*/
    {.bitmap_index = 511,	.adv_w = 5, .box_h = 7, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(y)*/
    {.bitmap_index = 518,	.adv_w = 5, .box_h = 5, .box_w = 8, .ofs_x = 0, .ofs_y = 3},/*(z)*/
    {.bitmap_index = 523,	.adv_w = 3, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*({)*/
    {.bitmap_index = 532,	.adv_w = 2, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(|)*/
    {.bitmap_index = 541,	.adv_w = 3, .box_h = 9, .box_w = 8, .ofs_x = 0, .ofs_y = 1},/*(})*/
    {.bitmap_index = 550,	.adv_w = 5, .box_h = 2, .box_w = 8, .ofs_x = 0, .ofs_y = 5},/*(~)*/
    {.bitmap_index = 552,	.adv_w = 6, .box_h = 7, .box_w = 8, .ofs_x = 1, .ofs_y = 3},/*()*/
    {.bitmap_index = 559,	.adv_w = 9, .box_h = 8, .box_w = 8, .ofs_x = 1, .ofs_y = 2},/*(中)*/
    {.bitmap_index = 567,	.adv_w = 9, .box_h = 8, .box_w = 8, .ofs_x = 1, .ofs_y = 2},/*(国)*/
};


static const uint16_t unicode_list_1[] = {
    0x0020,	/*( )*/
    0x0021,	/*(!)*/
    0x0022,	/*(")*/
    0x0023,	/*(#)*/
    0x0024,	/*($)*/
    0x0025,	/*(%)*/
    0x0026,	/*(&)*/
    0x0027,	/*(')*/
    0x0028,	/*(()*/
    0x0029,	/*())*/
    0x002a,	/*(*)*/
    0x002b,	/*(+)*/
    0x002c,	/*(,)*/
    0x002d,	/*(-)*/
    0x002e,	/*(.)*/
    0x002f,	/*(/)*/
    0x0030,	/*(0)*/
    0x0031,	/*(1)*/
    0x0032,	/*(2)*/
    0x0033,	/*(3)*/
    0x0034,	/*(4)*/
    0x0035,	/*(5)*/
    0x0036,	/*(6)*/
    0x0037,	/*(7)*/
    0x0038,	/*(8)*/
    0x0039,	/*(9)*/
    0x003a,	/*(:)*/
    0x003b,	/*(;)*/
    0x003c,	/*(<)*/
    0x003d,	/*(=)*/
    0x003e,	/*(>)*/
    0x003f,	/*(?)*/
    0x0040,	/*(@)*/
    0x0041,	/*(A)*/
    0x0042,	/*(B)*/
    0x0043,	/*(C)*/
    0x0044,	/*(D)*/
    0x0045,	/*(E)*/
    0x0046,	/*(F)*/
    0x0047,	/*(G)*/
    0x0048,	/*(H)*/
    0x0049,	/*(I)*/
    0x004a,	/*(J)*/
    0x004b,	/*(K)*/
    0x004c,	/*(L)*/
    0x004d,	/*(M)*/
    0x004e,	/*(N)*/
    0x004f,	/*(O)*/
    0x0050,	/*(P)*/
    0x0051,	/*(Q)*/
    0x0052,	/*(R)*/
    0x0053,	/*(S)*/
    0x0054,	/*(T)*/
    0x0055,	/*(U)*/
    0x0056,	/*(V)*/
    0x0057,	/*(W)*/
    0x0058,	/*(X)*/
    0x0059,	/*(Y)*/
    0x005a,	/*(Z)*/
    0x005b,	/*([)*/
    0x005c,	/*(\)*/
    0x005d,	/*(])*/
    0x005e,	/*(^)*/
    0x005f,	/*(_)*/
    0x0060,	/*(`)*/
    0x0061,	/*(a)*/
    0x0062,	/*(b)*/
    0x0063,	/*(c)*/
    0x0064,	/*(d)*/
    0x0065,	/*(e)*/
    0x0066,	/*(f)*/
    0x0067,	/*(g)*/
    0x0068,	/*(h)*/
    0x0069,	/*(i)*/
    0x006a,	/*(j)*/
    0x006b,	/*(k)*/
    0x006c,	/*(l)*/
    0x006d,	/*(m)*/
    0x006e,	/*(n)*/
    0x006f,	/*(o)*/
    0x0070,	/*(p)*/
    0x0071,	/*(q)*/
    0x0072,	/*(r)*/
    0x0073,	/*(s)*/
    0x0074,	/*(t)*/
    0x0075,	/*(u)*/
    0x0076,	/*(v)*/
    0x0077,	/*(w)*/
    0x0078,	/*(x)*/
    0x0079,	/*(y)*/
    0x007a,	/*(z)*/
    0x007b,	/*({)*/
    0x007c,	/*(|)*/
    0x007d,	/*(})*/
    0x007e,	/*(~)*/
    0x007f,	/*()*/
    0x4e2d,	/*(中)*/
    0x56fd,	/*(国)*/
    0x0000,    /*End indicator*/
};


static const lv_font_fmt_txt_cmap_t cmaps[] = {
    {
        .range_start = 0x0020,
        .range_length = 0x56fd,
        .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY,
        .glyph_id_start = 0,
        .unicode_list = unicode_list_1,
        .glyph_id_ofs_list = NULL,
        .list_length = 98,
    }
};


static lv_font_fmt_txt_glyph_cache_t glyph_cache;


static lv_font_fmt_txt_dsc_t font_dsc = {
    .glyph_bitmap = glyph_bitmap,
    .glyph_dsc = glyph_dsc,
    .cmaps = cmaps,
    .cmap_num = 1,
    .bpp = 1,

    .kern_scale = 0,
    .kern_dsc = NULL,
    .kern_classes = 0,

    .cache = &glyph_cache,
};


static int binsearch(const uint16_t *sortedSeq, int seqLength, uint16_t keyData) {
    int low = 0, mid, high = seqLength - 1;
    while (low <= high) {
        mid = (low + high)>>1;//右移1位等于是/2，奇数，无论奇偶，有个值就行
        if (keyData < sortedSeq[mid]) {
            high = mid - 1;//是mid-1，因为mid已经比较过了
        }
        else if (keyData > sortedSeq[mid]) {
            low = mid + 1;
        }
        else {
            return mid;
        }
    }
    return -1;
}


static const uint8_t * __user_font_get_bitmap(const lv_font_t * font, uint32_t unicode_letter) {
    lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;

    if( unicode_letter<fdsc->cmaps[0].range_start || unicode_letter>fdsc->cmaps[0].range_length ) return false;

    int i;
    if( unicode_letter==fdsc->cache->last_letter ){
        i = fdsc->cache->last_glyph_id;
    }
    else{
        i = binsearch(fdsc->cmaps[0].unicode_list, fdsc->cmaps[0].list_length, unicode_letter);
    }
    if( i != -1 ) {
        const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[i];
        fdsc->cache->last_glyph_id = i;
        fdsc->cache->last_letter = unicode_letter;
        return &fdsc->glyph_bitmap[gdsc->bitmap_index];
    }
    return NULL;
}


static bool __user_font_get_glyph_dsc(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) {
    lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc;

    if( unicode_letter<fdsc->cmaps[0].range_start || unicode_letter>fdsc->cmaps[0].range_length ) return false;

    int i;
    if( unicode_letter==fdsc->cache->last_letter ){
        i = fdsc->cache->last_glyph_id;
    }
    else{
        i = binsearch(fdsc->cmaps[0].unicode_list, fdsc->cmaps[0].list_length, unicode_letter);
    }
    if( i != -1 ) {
        const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[i];
        fdsc->cache->last_glyph_id = i;
        fdsc->cache->last_letter = unicode_letter;
        dsc_out->adv_w = gdsc->adv_w;
        dsc_out->box_h = gdsc->box_h;
        dsc_out->box_w = gdsc->box_w;
        dsc_out->ofs_x = gdsc->ofs_x;
        dsc_out->ofs_y = gdsc->ofs_y;
        dsc_out->bpp   = fdsc->bpp;
        return true;
    }
    return false;
}


//阿里巴巴普惠体,Bold,7
//字模高度：12
//内部字体
//使用排序和二分查表
const lv_font_t myFont = {
    .dsc = &font_dsc,
    .get_glyph_bitmap = __user_font_get_bitmap,
    .get_glyph_dsc = __user_font_get_glyph_dsc,
    .line_height = 12,
    .base_line = 0,
};

